#ifndef HASH_H
#define HASH_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Estrutura usada para armazenar o hash set */
struct hash_set{
	char **set_palavras; /* conjunto de palavras do hash */
	int *encontrada; /* vetor de inteiros que indica se uma palavra foi encontrada */
	int **maes; /* vetor com os ids das palavras maes de uma certa palavra */
	int *cnt_maes; /* vetor de contadores de quantas maes cada palavra tem */
	int tamanho; /* tamanho do hash set */
	int n_palavras; /* numero de palavras inseridas */
	int n_colisoes; /* numero de colisoes */
	int n_encontradas; /* numero de palavras do hash encontradas */
};
typedef struct hash_set hash_set;

void criar_hash_set(hash_set *set, int tamanho);
int fhash(hash_set *set, char *str);
int inserir_hash_set(hash_set *set, char *str);
char *hash_set_para_string(hash_set *set);
int encontrar_hash_set(hash_set *set, char *str, int **encontradas);
int inserir_hash_set_mae(hash_set *set, char *str, int mae);
void deletar_hash_set(hash_set *set);

#endif
